home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xsw / sysinfo.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  13KB  |  307 lines

  1. /*
  2.  *    @(#) sysinfo.c 12.1 95/05/09 SCOINC
  3.  */
  4. /***************************************************************************
  5.  *
  6.  *    Copyright (c) 1990-1993        The Santa Cruz Operation, Inc.
  7.  *
  8.  *    All rights reserved.  No part of this program or publication may be
  9.  *    reproduced, transmitted, transcribed, stored in a retrieval system,
  10.  *    or translated into any language or computer language, in any form or
  11.  *    by any means, electronic, mechanical, magnetic, optical, chemical,
  12.  *    biological, or otherwise, without the prior written permission of:
  13.  *
  14.  *        The Santa Cruz Operation , Inc.        (408) 425-7222
  15.  *        400 Encinal St., Santa Cruz, California 95060 USA
  16.  *
  17.  **************************************************************************/
  18. /*
  19.  * Modification History
  20.  *
  21.  * S002, 27-May-93, rickra
  22.  *     Added support for pixmaps. 
  23.  *
  24.  * S001, 30-Sep-92, rickra
  25.  *     Added support for seperate windows.
  26.  *
  27.  * S000, 30-Sep-92, rickra
  28.  *     Added copyright and modification history
  29.  *    Changed window header to expand to the right for resize
  30.  */
  31. /*+-------------------------------------------------------------------------
  32.     sysinfo.c - XSW sysinfo/minfo display handler
  33.     wht@n4hgf.Mt-Park.GA.US
  34.  
  35.   Defined functions:
  36.     draw_Sysinfo_literals(x,y)
  37.     update_Sysinfo()
  38.  
  39. --------------------------------------------------------------------------*/
  40. /*+:EDITS:*/
  41. /*:09-25-1990-05:11-wht@n4hgf-release heh-heh x0.22 preliminary */
  42. /*:09-20-1990-00:09-wht@n4hgf-scales, sysinfo/minfo, bootinfo working */
  43. /*:09-15-1990-14:47-wht-creation */
  44. #include <X11/Xlib.h>
  45. #include <X11/Xutil.h>
  46. #include <X11/Intrinsic.h>
  47. #include <X11/Shell.h>
  48. #include <Xm/Xm.h>
  49. #include <Xm/MainW.h>
  50. #include <Xm/DrawingA.h>
  51.  
  52. #include "include/unixincs.h"
  53. #include "include/buttons.h"
  54. #include "include/xsw.h"
  55.  
  56. extern struct NetworkXswStruct *current_server;
  57.  
  58. int             sysinfo_tlx;
  59. int             sysinfo_tly;
  60.  
  61. /*+-------------------------------------------------------------------------
  62.     update_Sysinfo()
  63. --------------------------------------------------------------------------*/
  64. void
  65. update_Sysinfo (SP)
  66.      struct NetworkXswStruct *SP;
  67.  
  68. {
  69.   Window          window = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window;
  70.   Display        *display = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].display;
  71.   GC              gc = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].gc;
  72.   XWindowAttributes DrawAreaXYWH = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].DrawAreaXYWH;
  73.   Pixmap          pixmap = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].pixmap;
  74.  
  75.   register int    x, y;
  76.   int             fheight = FHEIGHT;
  77.  
  78. /*
  79.   if (DrawAreaXYWH.height < (sysinfo_tly + (fheight * 2)))
  80.     return;
  81. */
  82.  
  83.   y = sysinfo_tly + fheight;
  84.   x = sysinfo_tlx + Sysinfo1_TLX;
  85.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "bread    ", "%7ld", sysidelta (bread));
  86.   y += fheight;
  87.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "bwrite   ", "%7ld", sysidelta (bwrite));
  88.   y += fheight;
  89.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "lread    ", "%7ld", sysidelta (lread));
  90.   y += fheight;
  91.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "lwrite   ", "%7ld", sysidelta (lwrite));
  92.   y += fheight;
  93.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "phread   ", "%7ld", sysidelta (phread));
  94.   y += fheight;
  95.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "phwrite  ", "%7ld", sysidelta (phwrite));
  96.   y += fheight;
  97.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "swapin   ", "%7ld", sysidelta (swapin));
  98.   y += fheight;
  99.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "swapout  ", "%7ld", sysidelta (swapout));
  100.   y += fheight;
  101.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "bswapin  ", "%7ld", sysidelta (bswapin));
  102.   y += fheight;
  103.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "bswapout ", "%7ld", sysidelta (bswapout));
  104.   y += fheight;
  105.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "iget     ", "%7ld", sysidelta (iget));
  106.   y += fheight;
  107.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "namei    ", "%7ld", sysidelta (namei));
  108.   y += fheight;
  109.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "dirblk   ", "%7ld", sysidelta (dirblk));
  110.   y += fheight;
  111.  
  112.   y = sysinfo_tly + fheight;
  113.   x = sysinfo_tlx + Sysinfo2_TLX;
  114.  
  115.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "readch  ", "%7ld", sysidelta (readch));
  116.   y += fheight;
  117.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "writch  ", "%7ld", sysidelta (writech));
  118.   y += fheight;
  119.  
  120.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "rawch   ", "%7ld", sysidelta (rawch));
  121.   y += fheight;
  122.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "canch   ", "%7ld", sysidelta (canch));
  123.   y += fheight;
  124.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "outch   ", "%7ld", sysidelta (outch));
  125.   y += fheight;
  126.  
  127.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "msg     ", "%7ld", sysidelta (msg));
  128.   y += fheight;
  129.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "sema    ", "%7ld", sysidelta (sema));
  130.   y += fheight;
  131.  
  132.   disp_static_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "maxmem  ", "%6ldk", (long) *current_server -> my_maxmem * NBPP / 1024);
  133.   y += fheight;
  134.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "frmem   ", "%6ldk", (long) *current_server -> my_freemem * NBPP / 1024);
  135.   y += fheight;
  136.   disp_info_int (window, display, gc, DrawAreaXYWH, x, y, pixmap, "mem used", "%6d%%",
  137.          100 - (int) ((*current_server -> my_freemem * 100) / *current_server -> my_maxmem));
  138.   y += fheight;
  139.  
  140.   disp_static_int (window, display, gc, DrawAreaXYWH, pixmap, x, y, "nswap   ", "%6ldk", current_server -> my_nswap);
  141.   y += fheight;
  142.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "frswp   ", "%6ldk", current_server -> my_minfo -> freeswap * NBPSCTR / 1024);
  143.   y += fheight;
  144.   disp_info_int (window, display, gc, DrawAreaXYWH, x, y, pixmap, "swp used", "%6d%%",
  145.          100 - (int) ((current_server -> my_minfo -> freeswap * NBPSCTR / 1024) * 100) / current_server -> my_nswap);
  146.   y += fheight;
  147.   disp_info_int (window, display, gc, DrawAreaXYWH, x, y, pixmap, "availswp", "%6dk",
  148.          (int) *current_server -> my_availsmem * NBPP / 1024);
  149.   y += fheight;
  150.  
  151.   y = sysinfo_tly + fheight;
  152.   x = sysinfo_tlx + Sysinfo3_TLX;
  153.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "pswitch ", "%5ld", sysidelta (pswitch));
  154.   y += fheight;
  155.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "syscall ", "%5ld", sysidelta (syscall));
  156.   y += fheight;
  157.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "sysread ", "%5ld", sysidelta (sysread));
  158.   y += fheight;
  159.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "syswrit ", "%5ld", sysidelta (syswrite));
  160.   y += fheight;
  161.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "sysfork ", "%5ld", sysidelta (sysfork));
  162.   y += fheight;
  163.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "sysexec ", "%5ld", sysidelta (sysexec));
  164.   y += fheight;
  165.  
  166.   y += fheight;
  167.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "runque  ", "%5ld", sysidelta (runque));
  168.   y += fheight;
  169.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "runocc  ", "%5ld", sysidelta (runocc));
  170.   y += fheight;
  171.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "swpque  ", "%5ld", sysidelta (swpque));
  172.   y += fheight;
  173.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "swpocc  ", "%5ld", sysidelta (swpocc));
  174.   y += fheight;
  175.  
  176.   y = sysinfo_tly + fheight;
  177.   x = sysinfo_tlx + Sysinfo4_TLX;
  178.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "vfault  ", "%3ld", midelta (vfault));
  179.   y += fheight;
  180.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "demand  ", "%3ld", midelta (demand));
  181.   y += fheight;
  182.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "pfault  ", "%3ld", midelta (pfault));
  183.   y += fheight;
  184.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "cw      ", "%3ld", midelta (cw));
  185.   y += fheight;
  186.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "steal   ", "%3ld", midelta (steal));
  187.   y += fheight;
  188.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "frdpgs  ", "%3ld", midelta (freedpgs));
  189.   y += fheight;
  190. #if defined(SVR32)
  191.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "vfpg    ", "%3ld", midelta (vfpg));
  192.   y += fheight;
  193.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "sfpg    ", "%3ld", midelta (sfpg));
  194.   y += fheight;
  195.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "vspg    ", "%3ld", midelta (vspg));
  196.   y += fheight;
  197.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "sspg    ", "%3ld", midelta (sspg));
  198.   y += fheight;
  199.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "pnpfault", "%3ld", sysidelta (pnpfault));
  200.   y += fheight;
  201.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "wrtfault", "%3ld", sysidelta (wrtfault));
  202.   y += fheight;
  203. #endif
  204.  
  205.   y = sysinfo_tly + fheight;
  206.   x = sysinfo_tlx + Sysinfo5_TLX;
  207.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "unmodsw ", "%3ld", midelta (unmodsw));
  208.   y += fheight;
  209.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "unmodfl ", "%3ld", midelta (unmodfl));
  210.   y += fheight;
  211. #if defined(SVR32)
  212.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "psoutok ", "%3ld", midelta (psoutok));
  213.   y += fheight;
  214.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "psinfai ", "%3ld", midelta (psinfail));
  215.   y += fheight;
  216.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "psinok  ", "%3ld", midelta (psinok));
  217.   y += fheight;
  218.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "rsout   ", "%3ld", midelta (rsout));
  219.   y += fheight;
  220.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "rsin    ", "%3ld", midelta (rsin));
  221.   y += fheight;
  222. #endif
  223.  
  224.   y += fheight;
  225.   disp_info_int (window, display, gc, DrawAreaXYWH, x, y, pixmap, "pages from ", "", 0);
  226.   y += fheight;
  227.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "swap  ", "%5ld", midelta (swap));
  228.   y += fheight;
  229.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "cache ", "%5ld", midelta (cache));
  230.   y += fheight;
  231.   disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "file  ", "%5ld", midelta (file));
  232.   y += fheight;
  233.  
  234. }                /* end of update_Sysinfo */
  235.  
  236. /*+-------------------------------------------------------------------------
  237.     draw_Sysinfo_literals(x,y,scale_name,val1_name,val2_name,val3_name)
  238. --------------------------------------------------------------------------*/
  239. void
  240. draw_Sysinfo_literals (SP)
  241.      struct NetworkXswStruct *SP;
  242.  
  243. {
  244.   Window          window = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window;
  245.   Display        *display = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].display;
  246.   GC              gc = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].gc;
  247.   XWindowAttributes DrawAreaXYWH = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].DrawAreaXYWH;
  248.   Pixmap          pixmap = SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].pixmap;
  249.  
  250.   int             x = 0;
  251.   int             y = 0;
  252.   int             x2 = x;
  253.   int             ys = y + FASCENT;
  254.   int             yl1 = y + (FASCENT / 2) + 1;
  255.   int             yl2 = y + (FHEIGHT / 2);
  256.   int             len;
  257.   char           *cptr;
  258.   int             fheight = FHEIGHT;
  259.   int             fwidth = FWIDTH;
  260.   int             line_style = LineSolid;
  261.   int             cap_style = CapButt;
  262.   int             join_style = JoinMiter;
  263.  
  264.   sysinfo_tlx = x;
  265.   sysinfo_tly = y;
  266.  
  267.   /* the "background" color */
  268.   XSetForeground (display, gc, colorTitleBarBG.pixel);
  269.   XSetLineAttributes (display, gc, fheight,
  270.               line_style, cap_style, join_style);
  271. /*
  272.   XDrawLine (display, window, gc, x, yl2, DrawAreaXYWH.width - BORDER_EXTRA_WIDTH , yl2);
  273. */
  274.   XDrawLine (display, pixmap, gc, x, yl2, SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].width - BORDER_EXTRA_WIDTH, yl2);
  275.  
  276.   /* "-----Sysinfo/Minfo-----------------" */
  277.   XSetForeground (display, gc, colorTitleBarFG.pixel);
  278.   XSetLineAttributes (display, gc, FASCENT / 2,
  279.               line_style, cap_style, join_style);
  280. /*
  281.   XDrawLine (display, window, gc,
  282.          x2, yl1,
  283.          x2 + (len = (fwidth * 5)) - FGAP, yl1);
  284. */
  285.   XDrawLine (display, pixmap, gc,
  286.          x2, yl1,
  287.          x2 + (len = (fwidth * 5)) - FGAP, yl1);
  288.   x2 += len;
  289.  
  290.   cptr = "Sysinfo/Minfo";
  291. /*
  292.   XDrawString (display, window, gc, x2, ys, cptr, len = strlen (cptr));
  293.   XDrawString (display, window, gc, x2 + 1, ys, cptr, len);
  294. */
  295.   XDrawString (display, pixmap, gc, x2, ys, cptr, len = strlen (cptr));
  296.   XDrawString (display, pixmap, gc, x2 + 1, ys, cptr, len);
  297.   x2 += (fwidth * len) + FGAP + 1;
  298. /*
  299.   XDrawLine (display, window, gc, x2, yl1, DrawAreaXYWH.width - BORDER_EXTRA_WIDTH , yl1);
  300. */
  301.   XDrawLine (display, pixmap, gc, x2, yl1, SP -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].width - BORDER_EXTRA_WIDTH, yl1);
  302.  
  303. }                /* end of draw_Sysinfo_literals */
  304.  
  305. /* vi: set tabstop=4 shiftwidth=4: */
  306. /* end of sysinfo.c */
  307.